package lu.med.praxiswahl.wahlumed.service.beans;

import java.util.Calendar;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import lu.med.praxiswahl.wahlumed.dao.beans.daointerface.CtgDAOInt;
import lu.med.praxiswahl.wahlumed.model.beans.BefundeTBL;
import lu.med.praxiswahl.wahlumed.model.beans.CtgTBL;
import lu.med.praxiswahl.wahlumed.model.beans.CustomerTBL;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.CtgServiceInt;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.CustomerServiceInt;

/**
 * Session Bean implementation class BefundeService
 */
@Stateless
@Remote({ CtgServiceInt.class })
public class CtgService implements CtgServiceInt {

	@EJB
	private CustomerServiceInt cust;

	private CtgTBL tmpCtg;

	@EJB
	private CtgDAOInt ctgDao;

	/**
	 * Default constructor.
	 */
	public CtgService() {
		tmpCtg = new CtgTBL();
	}

	/**
	 * @see CtgServiceInt#createCTGItem(Calendar, String)
	 */
	public int createCTGItem(Calendar datum, String matricule,
			String bezeichner, String text) {

		CtgTBL tmpCtg_1 = new CtgTBL();

		tmpCtg_1.setDatum(datum);
		tmpCtg_1.setCustomer(cust.getCustomer(matricule));
		tmpCtg_1.setBezeichner(bezeichner);
		tmpCtg_1.setText(text);

		ctgDao.persist(tmpCtg_1);

		return RET_OPERATION_DONE_PROPERLY;
	}

	@Override
	public CtgTBL[] getCTGByCustomer(String matricule) {
		Object[] tmp = ctgDao.retrieveCTGItemsByCustomer(matricule).toArray();
		CtgTBL[] eintraege = new CtgTBL[tmp.length];

		for (int i = 0; i < tmp.length; i++) {
			eintraege[i] = (CtgTBL) tmp[i];
		}
		return eintraege;
	}

	/**
	 * @see CtgServiceInt#setBezeichner(String)
	 */
	public void setBezeichner(String bezeichner) {

		tmpCtg.setBezeichner(bezeichner);
		ctgDao.update(tmpCtg);
	}

	/**
	 * @see CTGServiceInt#getCustomer()
	 */
	public CustomerTBL getCustomer() {

		return tmpCtg.getCustomer();
	}

	/**
	 * @see CtgServiceInt#getA_CTGInstance(BefundeTBL)
	 */
	public void getA_CTGInstance(CtgTBL ctg) {

		tmpCtg = ctg;
	}

	/**
	 * @see CtgServiceInt#setText(String)
	 */
	public void setText(String text) {

		tmpCtg.setText(text);
		ctgDao.update(tmpCtg);
	}

	/**
	 * @see CtgServiceInt#setDatum(Calendar)
	 */
	public void setDatum(Calendar datum) {

		tmpCtg.setDatum(datum);
		ctgDao.update(tmpCtg);
	}

	/**
	 * @see CtgServiceInt#getBezeichner()
	 */
	public String getBezeichner() {
		return tmpCtg.getBezeichner();
	}

	/**
	 * @see CtgServiceInt#setCustomer(CustomerTBL)
	 */
	public void setCustomer(CustomerTBL customer) {
		tmpCtg.setCustomer(customer);
		ctgDao.update(tmpCtg);
	}

	/**
	 * @see CtgServiceInt#getText()
	 */
	public String getText() {
		return tmpCtg.getText();
	}

	/**
	 * @see CtgServiceInt#getDatum()
	 */
	public Calendar getDatum() {
		return tmpCtg.getDatum();
	}

	/**
	 * @see CtgServiceInt#getBefunde_nummer()
	 */
	public Long getCTG_nummer() {
		return null;
	}

	@Override
	public int deleteCtgItem(Long id) {
		this.ctgDao.delete(id);
		return RET_OPERATION_DONE_PROPERLY;
	}

	public Long getSubPrimaryKeyIndex() {
		return this.ctgDao.findDatabaseSubPrimaryKeyIndex();
	}

	@Override
	public void update_date(Long id, Calendar datum) {
		CtgTBL tmpCtg_1 = this.ctgDao.retrieveCTGItemByID(id);
		tmpCtg_1.setDatum(datum);
		this.ctgDao.update(tmpCtg_1);

	}

	@Override
	public void update_bezeichner(Long id, String bezeichner) {

		CtgTBL tmpCtg_1 = this.ctgDao.retrieveCTGItemByID(id);
		tmpCtg_1.setBezeichner(bezeichner);
		this.ctgDao.update(tmpCtg_1);

	}

	@Override
	public void update_text(Long id, String text) {

		CtgTBL tmpCtg_1 = this.ctgDao.retrieveCTGItemByID(id);
		tmpCtg_1.setText(text);
		this.ctgDao.update(tmpCtg_1);

	}

}
